package lanqiaobei2020;

public class _02合并检测 {
    /**
     * 新冠疫情由新冠病毒引起，最近在 A 国蔓延，为了尽快控制疫情，A 国准
     * 备给大量民众进病毒核酸检测。
     * 然而，用于检测的试剂盒紧缺。
     * 为了解决这一困难，科学家想了一个办法：合并检测。即将从多个人（k
     * 个）采集的标本放到同一个试剂盒中进行检测。如果结果为阴性，则说明这 k
     * 个人都是阴性，用一个试剂盒完成了 k 个人的检测。如果结果为阳性，则说明
     * 至少有一个人为阳性，需要将这 k 个人的样本全部重新独立检测（从理论上看，
     * 如果检测前 k − 1 个人都是阴性可以推断出第 k 个人是阳性，但是在实际操作中
     * 不会利用此推断，而是将 k 个人独立检测），加上最开始的合并检测，一共使用
     * 了 k + 1 个试剂盒完成了 k 个人的检测。
     * A 国估计被测的民众的感染率大概是 1%，呈均匀分布。请问 k 取多少能
     * 最节省试剂盒？
     *
     * 举个例子吧。假设一共100个人。百分之一，那么100个人中只有一个人感染。
     * 1：100%k==0
     * k=10。
     * 那么我们需要取10次(100/10)。最坏情况，是在最后一组找到了感染者，那么前9次，用了9个试剂盒，
     * 无阳性，第十次，先用1个试剂盒，发现阳性，接下来对10个人都进行一次，又用了10个试剂盒，一共是9+1+10==20。即(100/k+k)。
     * 2：100%k!=0
     * k=49
     * 可以分成2，49，49三组。最坏情况，是在49 那一组发现了感染者。所以对前两组，用了2个试剂盒，无阳性。第三组，1个试剂盒，发现阳性，全测，49个
     * 一共是：2+1+49==52。推出公式：(100/k+k+1)
     * 此题答案为10
     */
    public static void main(String[] args) {
        int min = 9999;
        int ans = 0;
        for (int i = 1 ; i <= 100 ; i ++){
            int count = 0;
            if ( 100 % i != 0){
                count = 100 / i + i + 1;
            }else {
                count = 100 / i + i;
            }
            if (count < min){
                min = count;
                ans = i;
            }
        }
        System.out.println(ans);
    }
}
